package com.engine.budget.cmd;

import com.engine.budget.manager.InstructionManager;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.core.interceptor.CommandContext;
import weaver.hrm.User;
import weaver.integration.logging.Logger;
import weaver.integration.logging.LoggerFactory;

import java.util.Map;

/**
 * @author DY
 * @version 1.0
 * @date 2024/7/8 9:31
 * @description: 预算执行指令
 */
public class ExecBudgetCmd extends AbstractCommonCommand<Map<String,Object>> {

    private Map<String, Object> otherMap;

    private String logId;

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @Override
    public Map<String, Object> execute(CommandContext commandContext) {

        //返回数据

        InstructionManager instructionManager = new InstructionManager();

        Map<String, Object> result = instructionManager.execBudget(params, otherMap);
//        RecordSetTrans rsTrans = new RecordSetTrans();
//        try {
//            this.logId = Util.null2String(otherMap.get("logId"));
//            result.put("logId", logId);
//            logger.info("调用预算执行指令接口cmd_start...LogID:"+logId);
//
//            //业务参数
//            JSONArray paramsArr = JSONArray.fromObject(params.get("params"));
//            //返回数据数组
//            JSONArray resArray = new JSONArray();
//            //验证失败的表示
//            boolean errFlag = false;
//
//            RecordSet rs = new RecordSet();
//
//            String sql = "select sfxrdb from uf_djkzclb where zhdjh = ?";
//
//            for (int i = 0; i < paramsArr.size(); i++) {
//
//                JSONObject data = paramsArr.getJSONObject(i);
//
//                //执行单据号
//                String exeDocNo = Util.null2String(data.getOrDefault("exeDocNo", ""));
//                rs.executeQuery(sql, exeDocNo);
//                if(rs.next()) {
//                    otherMap.put("whiteZxdjh", "1");
//                }else {
//                    otherMap.put("whiteZxdjh", "0");
//                }
//
//                Map<String, Object> checkMap = VerifyUtil.verifyParams(data, otherMap, rs);
//                otherMap.remove("whiteZxdjh");
//                String status = Util.null2String(checkMap.getOrDefault("status", ""));
//                if(!"1".equals(status) && !"-11".equals(status)) {
//                    errFlag = true;
//                }
//                resArray.add(checkMap);
//            }
//
//            if (errFlag) {
//                result.put("result", resArray);
//                return result;
//            }
//
//            InstructionManager instructionManager = new InstructionManager();
//
//            JSONArray newResArray = new JSONArray();
//
//            for (int i = 0; i < paramsArr.size(); i++) {
//
//                JSONObject data = paramsArr.getJSONObject(i);
//
//                //执行单据号
//                String exeDocNo = Util.null2String(data.getOrDefault("exeDocNo", ""));
//                //是否写入数据
//                String sfxrdb = "";
//                rs.executeQuery(sql, exeDocNo);
//                if(rs.next()) {
//                    sfxrdb= Util.null2String(rs.getString("sfxrdb"));
//                }
//
//
//                JSONObject yzData = resArray.getJSONObject(i);
//
//                String status = Util.null2String(yzData.getOrDefault("status", ""));
//                if(!"-11".equals(status) && !"1".equals(sfxrdb)) {
//                    Map<String, Object> resMap = instructionManager.execute(data, otherMap, rsTrans);
//                    JSONObject resdata = yzData.getJSONObject("data");
//                    resMap.put("data", resdata);
//                    yzData = JSONObject.fromObject(resMap);
//                }
//                newResArray.add(yzData);
//
//                InstructionManager.addInstructionLog(data, yzData, rs);
//
//            }
//            rsTrans.commit();
//
//            result.put("result", newResArray);
//            return result;
//        }catch (Exception e) {
//            Map<String, Object> errMap = VerifyMessage.XT_ERR.fromMap();
//            errMap.put("status", -3);
//            result.put("result", "[]");
//            result.putAll(errMap);
//            rsTrans.rollback();
//            logger.error("调用预算执行指令接口cmd——异常...err:"+e.getMessage(), e);
//        }

        logger.info("调用预算执行指令接口cmd_end...LogID:"+logId);
        return result;
    }

    public ExecBudgetCmd(User user, Map<String, Object> params, Map<String, Object> otherMap) {
        this.user = user;
        this.params = params;
        this.otherMap = otherMap;
        this.otherMap.put("user",user);
    }

    @Override
    public BizLogContext getLogContext() {
        return null;
    }
}
